The present invention relates to software distribution and in particular to a method of software distribution across a network which minimizes the overall bandwidth used to transmit the software.
It is well known to transmit software packages across a network from a server to one or more clients which require the package. Often, newer versions of a package will be released and will need distributing to clients running the older version of the software.
The packages which are being distributed according to the invention are sets of files, optionally with accompanying scripts. The scripts are run at installation time, and might for example be pre-install scripts run before files are installed or post-install scripts run afterward.
In certain circumstances, it is not imperative that all systems running the older software be upgraded or it is not possible for a server to have a record of all the systems running the software. In these circumstances, clients running the software could periodically poll the server which might or might not have a new version of the software, and request that the software be sent to the client if the server informs the client that it has a newer version. This approach is taken by many commercial software distributors who make upgrades of their products available over the internet.
In many situations, the above solution to software distribution is not acceptable. For example, if the software in question has never been installed on a client system, the client system has no way of knowing it should request the new software. Furthermore, software upgrades often need installing immediately to maintain overall system integrity. In view of these situations, and other similar situations, it has become necessary to provide distribution software that actively distributes software packages from a server to one or more clients, rather than waiting for the clients to request the software. An example of such a system is Platinum Technology, Inc.'s AutoXfer product.
Software distribution packages are commonly hierarchical, in that files in the software distribution package can be logically grouped into smaller packages which might be required on certain clients but not on others. Such packages, containing a set of files, are referred to as simple packages, and might for example consist of the files constituting a single application. A software package might also contain one or more composite packages which do not contain actual files, but instead contain references to two or more simple or composite packages which constitute the composite package. For example, a composite package might represent a suite of applications, the simple packages for which are referenced by the composite package. In order to send a composite package between nodes in a network, the packages referred to in the composite package need to be sent, along with the composite package. In addition, a composite package may also require that its referenced packages be installed in the order specified by its definition, even if it has no contingent scripts.
During repackaging there are two kinds of composite packages to consider. An open package has no constraints upon the order or processing of its contents, but is simply an aggregation of other packages. The contents of an open package can be freely manipulated without compromising the package itself, and its presence is implied by the presence of its contents. A closed package has constraints that require that its contents be installed in the context of the package (installation) itself, and its presence must be explicitly indicated.
Often, target nodes on the network will already have one or more of the simple packages referred to in a composite package installed before the composite package is sent. If the composite package is an open package, it is highly wasteful of bandwidth to send simple packages already installed to a target node, as the simple packages are not required to complete installation of the composite package.
Standards have been implemented for software distribution formats, such as the Posix 1387.2 standard. It uses four primary objects: Fileset, Subproduct, Product, and Bundle. This standard essentially specifies installation format in a Unix environment. It calls upon other Posix standards for definitions and requirements used in the standard.
Net News uses a filtering mechanism in order to send news articles to network machines, such that only what is requested and required be sent. There is no hierarchical structure to the articles, however, so the same problems do not arise as with software distribution.